맨위로가기

Kill (명령어)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

`kill`은 유닉스 및 유닉스 계열, 윈도우, OS-9 등 다양한 운영 체제에서 프로세스에 신호를 보내는 데 사용되는 명령어이다. 유닉스 계열에서는 기본적으로 SIGTERM 신호를 보내 프로세스 종료를 요청하지만, SIGKILL 신호를 사용하여 강제 종료할 수도 있다. 윈도우에서는 `taskkill` 명령어를 사용하며, 윈도우 파워셸에서는 `Stop-Process` cmdlet의 별칭으로 사용된다. `kill` 명령어는 프로세스 ID(PID) 또는 프로세스 그룹 ID(PGID)를 통해 프로세스 또는 프로세스 그룹에 신호를 보낸다.

더 읽어볼만한 페이지

  • 프로세스 - 문맥 교환
    문맥 교환은 운영 체제에서 CPU가 여러 프로세스나 스레드를 번갈아 실행하기 위해 현재 작업 상태를 저장하고 다른 작업 상태를 복원하는 과정으로, 멀티태스킹 환경에서 필수적인 기술이며 프로세스 제어 블록을 통해 관리된다.
  • 프로세스 - 데몬 (컴퓨팅)
    데몬은 운영 체제에서 사용자와 상호 작용 없이 백그라운드에서 실행되며 시스템의 다양한 작업을 처리하는 프로세스이다.
  • 유닉스 프로세스 및 작업 관리 관련 소프트웨어 - Ps (유닉스)
    `ps` 명령어는 유닉스 계열 운영체제에서 실행 중인 프로세스의 ID, CPU 사용량, 메모리 사용량, 실행 시간, 상태 등 자세한 정보를 표시하며, 파이프를 통해 다른 명령어와 결합하여 활용된다.
  • 유닉스 프로세스 및 작업 관리 관련 소프트웨어 - Top (소프트웨어)
    top은 시스템의 실시간 상태를 보여주는 프로세스 모니터링 소프트웨어 유틸리티로, CPU 사용률, 메모리 사용량, 실행 중인 프로세스 목록 등 다양한 정보를 제공한다.
  • 윈도우 명령어 - 파워셸
    파워셸은 마이크로소프트에서 개발한 작업 자동화 솔루션으로, 명령줄 셸과 스크립트 언어의 기능을 결합하여 윈도우 시스템 관리를 위해 설계되었으며, .NET 프레임워크 기반의 객체 지향적 특징을 갖고 다양한 플랫폼에서 자동화 스크립트 작성 및 실행, 시스템 구성 관리 등에 활용된다.
  • 윈도우 명령어 - 클립보드
    클립보드는 텍스트 조각을 임시 저장하는 버퍼로, 잘라내기, 복사, 붙여넣기 기능을 구현하며, 다양한 데이터 형식을 지원하고 애플리케이션 간 데이터 교환에 사용되며 보안 취약점의 대상이 될 수 있다.
Kill (명령어) - [IT 관련 정보]에 관한 문서
명령어 개요
이름kill (킬)
종류유닉스 명령어
사용 목적프로세스에 시그널을 보내 프로세스를 종료시키는 데 사용
최초 버전1973년 2월 (유닉스)
개발자AT&T 벨 연구소 및 다양한 오픈 소스 및 상업 개발자
사용 운영체제유닉스, 유닉스 계열, Plan 9, Inferno, OS-9, 윈도우, ReactOS, Singularity, IBM i
플랫폼크로스 플랫폼
사용법
기본 구문kill [옵션] PID...
설명kill 명령어는 지정된 프로세스 ID(PID)에 시그널을 보냄. 기본적으로 SIGTERM 시그널을 보내 프로세스 종료를 요청.
주요 옵션-l 또는 --list=[시그널]: 시그널 이름 목록을 표시.
-s 시그널 또는 -시그널: 보낼 시그널을 지정 (예: -s KILL 또는 -9).
-p: kill 명령어를 보내지 않고, 프로세스가 실행 가능한지 확인.
시그널 종류SIGTERM (15): 기본 시그널. 정상적인 종료 요청.
SIGKILL (9): 강제 종료 시그널. 프로세스를 즉시 종료.
SIGHUP (1): 프로세스 재시작 요청. 설정 파일 재로드 등에 사용.
SIGSTOP (19): 프로세스 일시 중지.
SIGCONT (18): 중지된 프로세스 재개.

2. 유닉스 및 유닉스 계열

유닉스유닉스 계열 운영 체제에서 `kill`은 프로세스에 신호를 보내는 데 사용되는 명령이다. 기본적으로 전송되는 신호는 프로세스가 종료하도록 요청하는 SIGTERM이다. 그러나 ''kill''이라는 이름은 다소 오해의 소지가 있는데, 전송되는 신호가 반드시 프로세스 종료와 관련이 있는 것은 아니기 때문이다.

`kill` 명령어는 `kill()` 시스템 호출을 감싸는 래퍼로, 프로세스 ID (PID) 또는 프로세스 그룹 ID (PGID)를 통해 프로세스 또는 프로세스 그룹에 신호를 보낸다. `kill`은 POSIX 표준에 정의된 대로 항상 독립 실행형 유틸리티로 제공되지만, 대부분의 에는 이와 약간 다를 수 있는 내장 `kill` 명령이 있다.[1][2]

SIGKILL 및 SIGSTOP ("중지")을 제외한 모든 신호는 프로세스가 "가로챌" 수 있다. 즉, 프로그램이 해당 신호를 수신하면 특수 함수를 호출할 수 있다. SIGKILL 및 SIGSTOP은 호스트 시스템의 커널에서만 인식되므로, 프로세스 실행을 제어하는 ​​신뢰할 수 있는 방법을 제공한다. SIGKILL은 프로세스를 강제 종료하고, SIGSTOP은 SIGCONT ("계속")를 수신할 때까지 프로세스를 일시 중지한다.[3]

유닉스는 권한이 없는 사용자가 다른 프로세스를 강제 종료하는 것을 방지하기 위한 보안 메커니즘을 제공한다. 기본적으로 프로세스가 다른 프로세스에 신호를 보내려면, 신호를 보내는 프로세스의 소유자가 신호를 받는 프로세스의 소유자와 같거나 슈퍼유저여야 한다.

사용 가능한 신호는 모두 이름이 다르며 특정 숫자에 매핑된다. 숫자와 신호 간의 구체적인 매핑은 유닉스 구현에 따라 다를 수 있다. SIGTERM은 종종 15로, SIGKILL은 종종 9로 번호가 매겨진다.

2. 1. 신호

`kill` 명령어는 다양한 신호를 프로세스에 보낼 수 있다. 사용자가 주로 사용하는 신호는 SIGTERM (종료)과 SIGKILL (강제 종료)이다. 기본적으로 `kill` 명령은 SIGTERM 신호를 보낸다.[1][2] SIGTERM 신호를 받은 프로그램은 종료하기 전에 필요한 정리 작업을 할 수 있다. 그러나 많은 프로그램이 이 신호를 특별히 처리하지 않아 기본 신호 처리기가 호출된다. 때로는 프로그램이 SIGTERM 신호를 제대로 처리하지 못하는 경우도 있다.

SIGKILL과 SIGSTOP (중지) 신호는 프로세스가 가로챌 수 없다. 이 두 신호는 커널에서만 처리되므로, 프로세스 실행을 제어하는 확실한 수단이 된다. SIGKILL은 프로세스를 즉시 종료시키고, SIGSTOP은 SIGCONT (계속) 신호를 받을 때까지 프로세스를 일시 중지시킨다.[3]

유닉스 시스템은 일반 사용자가 다른 사용자의 프로세스를 종료하지 못하도록 보안 메커니즘을 갖추고 있다. 프로세스가 다른 프로세스에 신호를 보내려면, 보내는 프로세스의 소유자가 받는 프로세스의 소유자와 같거나 슈퍼유저 권한을 가지고 있어야 한다.

각 신호는 이름과 번호를 가진다. 신호 번호는 유닉스 구현에 따라 다를 수 있지만, SIGTERM은 보통 15, SIGKILL은 보통 9이다.
주요 신호:

신호 이름설명기본값
SIGTERM종료 신호. 프로세스에게 종료를 요청한다.15
SIGKILL강제 종료 신호. 프로세스를 즉시 종료시킨다.9
SIGHUP아파치Sendmail 같은 일부 데몬은 이 신호를 받으면 구성 파일을 다시 읽는다.
SIGINT인터럽트 신호. 대부분의 유닉스 셸에서 +를 눌러 발생시킬 수 있다.
SIGTSTP터미널 정지 신호. +로 생성할 수 있다.
SIGQUIT종료 신호. + (백슬래시)로 생성하며, 프로그램이 코어 덤프를 수행하게 할 수 있다.
SIGSEGV잘못된 메모리 참조(세그멘테이션 오류)를 나타낸다.
TRAP트랩 신호.
ALRM알람 신호.


2. 2. 사용 예시

프로세스 ID가 '1234'인 프로세스에 SIGTERM 신호를 보내는 방법은 다음과 같다.

  • `kill 1234`
  • `kill -s TERM 1234`
  • `kill -TERM 1234`
  • `kill -15 1234`


SIGKILL 신호를 보내는 방법은 다음과 같다.

  • `kill -s KILL 1234`
  • `kill -KILL 1234`
  • `kill -9 1234`


HUP, TRAP, INT, SEGV, ALRM 등 다른 유용한 신호도 있다. HUP는 SIGHUP 신호를 보낸다. 아파치Sendmail 같은 일부 데몬은 SIGHUP 신호를 받으면 구성 파일을 다시 읽는다. 따라서 `kill` 명령어를 이 용도로 사용할 수도 있다. SIGINT 신호는 대부분의 유닉스 셸에서 Ctrl+C를 눌러 간단하게 생성할 수 있다. 또한 Ctrl+Z는 SIGTSTP ("터미널 정지")에, Ctrl+\ (백슬래시)는 SIGQUIT에 매핑되어 프로그램이 코어 덤프를 수행하도록 하는 것이 일반적이다.

2. 3. 관련 명령어


  • killall - 솔라리스 등 일부 유닉스 변종에서는 시스템 종료 시 이 유틸리티가 자동으로 호출된다. 개별 프로세스 대신 시스템의 모든 프로세스에 신호를 보낸다. IRIX, 리눅스, FreeBSD 등에서는 종료할 프로세스 이름을 지정하는 인수를 받는다. (예: `killall xmms`는 XMMS 음악 플레이어 인스턴스 종료)
  • pkill - 이름 및 기타 속성을 기반으로 프로세스에 신호를 보낸다. 솔라리스 7에서 처음 도입되었고, 리눅스, NetBSD, OpenBSD에서 재구현되었다. (예: `pkill firefox`는 `firefox` 프로세스 종료)
  • xkill - 매개변수 없이 호출하면 마우스 커서가 "x" 아이콘으로 변경된다. 사용자가 창을 클릭하면 X 서버는 해당 창 소유 클라이언트와의 연결을 닫는다. 이는 X 서버 연결이 닫히면 프로세스가 종료되는 경우가 많기 때문이다.

3. 마이크로소프트 윈도우

윈도우 파워셸에서 `kill`은 `Stop-Process` cmdlet의 미리 정의된 명령 별칭이다.

윈도우 XP, 윈도우 비스타, 윈도우 7 이상의 운영 체제에서는 `taskkill` 명령어를 사용하여 프로세스를 종료할 수 있다.[5]

마이크로소프트 윈도우에서 `taskkill` 명령어


ReactOS에서 `taskkill` 명령어


`kill`의 "지원되지 않는" 버전은 마이크로소프트 윈도우 리소스 키트의 여러 릴리스에 포함되어 있었으며, 윈도우 98에서 사용할 수 있었다.[6]

GNU 버전의 `kill`은 Cygwin을 통해 이식되었으며, Microsoft Windows Services for UNIX가 제공하는 유닉스 환경 서브시스템 내에서 실행된다.[7]

3. 1. 윈도우에서의 사용 예시

윈도우 파워셸에서 `kill`은 `Stop-Process` cmdlet에 대한 미리 정의된 명령어 별칭이다.

마이크로소프트 윈도우 XP, 비스타, 7 이상에서는 `taskkill` 명령어를 사용하여 프로세스를 종료할 수 있다.[5]

다음은 explorer.exe 프로세스 종료를 요청하는 예시이다.

```powershell

PS C:\> taskkill /im explorer.exe

```

다음 예제는 프로세스를 강제로 종료한다.

```powershell

PS C:\> taskkill /f /im explorer.exe

```

PID 번호를 사용하여 프로세스를 종료할 수도 있다.

```powershell

PS C:\> taskkill /pid 3476

3. 2. GNU kill

GNU 버전의 `kill`은 Cygwin을 통해 이식되었으며, Microsoft Windows Services for UNIX가 제공하는 유닉스 환경 서브시스템 내에서 실행된다.[7] 마이크로소프트는 1999년 9월 17일에 Softway Systems와 Interix 제품을 인수하여 Windows Services for Unix를 인수했다.[7]

4. 기타 운영 체제

OS-9 셸에서는 셸 내장 명령어로 `kill` 명령어를 사용할 수 있다. 이 명령어는 프로세스 ID를 사용하여 다른 프로세스를 종료한다.[4]

다음은 프로세스 ID "7"을 가진 프로세스를 중단하는 예시이다.

```text

$ kill 7

```

마이크로소프트 리서치마이크로커널 운영 체제인 싱귤래리티(운영 체제)의 표준 셸인 싱귤래리티 셸은 백그라운드 프로세스를 종료하는 `kill` 명령어를 포함하고 있다.

다음은 "SampleProcess"라는 이름의 프로세스를 중지하는 예시이다.

```text

Singularity>kill SampleProcess

```

다음은 프로세스 식별자 "42"를 가진 프로세스를 중지하는 예시이다.

```text

Singularity>kill 42

4. 1. Plan 9 from Bell Labs

Plan 9에서 `kill`은 실제로 프로세스를 종료하지 않고, 프로세스 ID도 사용하지 않는다. 대신, 프로세스의 실제 이름을 받아서, Plan 9에서 사용되는 rc 셸에 프로세스를 종료하기 위한 명령어를 출력한다.[9]

예를 들어, troff의 모든 인스턴스를 종료하려면 다음과 같이 입력한다.

```

kill troff | rc

```

`slay`라는 유사한 명령이 제공되는데, 이 명령은 같은 기능을 수행하지만, 이 방법으로 종료를 거부하는 프로세스를 처리한다.[9]

5. 한국에서의 활용

kill 명령어는 한국에서도 IT 개발자와 시스템 관리자가 서버를 안정적으로 운영하고, 프로세스를 효율적으로 관리하는 데 사용하는 필수적인 도구이다.

5. 1. 개발 및 시스템 관리

kill 명령어는 대한민국의 IT 개발자와 시스템 관리자가 서버를 안정적으로 운영하고, 프로세스를 효율적으로 관리하는 데 필수적인 도구이다.

참조

[1] 웹사이트 Bash Reference Manual: Job Control Builtins https://www.gnu.org/[...] 2015-02-24
[2] 웹사이트 zsh: 17. Shell Builtin Commands http://zsh.sourcefor[...] 2015-02-24
[3] 웹사이트 "" http://pubs.opengrou[...] 2015-02-24
[4] 서적 The OS-9 Guru - 1 : The Facts Galactic Industrial Limited
[5] 웹사이트 Taskkill https://technet.micr[...] 2015-02-24
[6] 웹사이트 Resource Kit Utilities - Windows '98 Resource Kit http://www.activexpe[...] 2015-02-24
[7] 웹사이트 GNU utilities for Win32 http://unxutils.sour[...] 2015-02-24
[8] Github reactos/taskkill.c at master · reactos/reactos · GitHub https://github.com/r[...]
[9] 웹사이트 UNIX to Plan 9 command translation http://www.plan9.bel[...] 2015-02-24
[10] 웹사이트 IBM System i Version 7.2 Programming Qshell https://www.ibm.com/[...] 2020-09-05
[11] Microsoft TechNet article Microsoft TechNet taskkill article http://technet.micro[...]
[12] Windows Services for UNIX Windows Services for UNIX http://technet.micro[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com